package demo06

import scala.collection.mutable.ArrayBuffer

/**
 *  可变数组
 */
object Test02_ArrayBuffer {
  def main(args: Array[String]): Unit = {
    //1。 创建可变数组
    val arr = new ArrayBuffer[Int]()
    // 另一种方式
    val arr2 = ArrayBuffer(10, 21, 17, 9, 28)

    println(arr.mkString("-"))
    println(arr2)

    // 2.访问元素
    println(arr2(0))
    arr2(0) = 12
    println(arr2(0))

    // 3。向数组添加元素
    // :+ 主要针对不可变数组来添加元素使用的，添加完元素后必须要将其赋给一个新的数组
    val newArray1 = arr :+ 15
    println(arr)
    println(newArray1)
    println(arr == newArray1) //  false

    // 可变数组添加元素调用 += 方法，添加完后无需赋给新的数组对象
    // += 向后追加  +=: 向前追加
    arr += 19
    println(arr)

    27 +=: arr
    println(arr)

    // 推荐使用append() 方法
    // 向后追加
    arr.append(36)
    // 向前添加
    arr.prepend(11,90,56)
    // 在指定位置添加  arr.insert(索引位置,可变参数)
    arr.insert(1,23,56)
    println(arr)

    //直接添加数组
    arr.insertAll(2,arr2)
//    arr.appendAll()
//    arr.prefixLength()

    // 4.删除元素
    // 删除某个位置的元素
    arr.remove(3)
    // 从索引位置开始，删除xx个数
//    arr.remove(0,10)

    arr-=36
    println(arr)

    // 5.可变数组转为不可变数组
    val array = ArrayBuffer(10,21,90)
    val newArray = array.toArray
    println(newArray.mkString("-"))
    println(array)

    // 6.不可变数组转为可变数组
    val buffer = newArray.toBuffer
    println(buffer)
    println(newArray)

  }
}
